summaryrefslogtreecommitdiffstats
path: root/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainPresenter.kt
blob: 554542e05abfd150000ffeb3f2d93c159b4c451b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later

package org.yuzu.yuzu_emu.ui.main

import org.yuzu.yuzu_emu.BuildConfig
import org.yuzu.yuzu_emu.R
import org.yuzu.yuzu_emu.YuzuApplication
import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile
import org.yuzu.yuzu_emu.utils.AddDirectoryHelper

class MainPresenter(private val view: MainView) {
    private var dirToAdd: String? = null

    fun onCreate() {
        val versionName = BuildConfig.VERSION_NAME
        view.setVersionString(versionName)
        refreshGameList()
    }

    private fun launchFileListActivity(request: Int) {
        view.launchFileListActivity(request)
    }

    fun handleOptionSelection(itemId: Int): Boolean {
        when (itemId) {
            R.id.menu_settings_core -> {
                view.launchSettingsActivity(SettingsFile.FILE_NAME_CONFIG)
                return true
            }
            R.id.button_add_directory -> {
                launchFileListActivity(REQUEST_ADD_DIRECTORY)
                return true
            }
            R.id.button_install_keys -> {
                launchFileListActivity(REQUEST_INSTALL_KEYS)
                return true
            }
            R.id.button_install_amiibo_keys -> {
                launchFileListActivity(REQUEST_INSTALL_AMIIBO_KEYS)
                return true
            }
            R.id.button_select_gpu_driver -> {
                launchFileListActivity(REQUEST_SELECT_GPU_DRIVER)
                return true
            }
        }
        return false
    }

    fun addDirIfNeeded(helper: AddDirectoryHelper) {
        if (dirToAdd != null) {
            helper.addDirectory(dirToAdd) { view.refresh() }
            dirToAdd = null
        }
    }

    fun onDirectorySelected(dir: String?) {
        dirToAdd = dir
    }

    private fun refreshGameList() {
        val databaseHelper = YuzuApplication.databaseHelper
        databaseHelper!!.scanLibrary(databaseHelper.writableDatabase)
        view.refresh()
    }

    companion object {
        const val REQUEST_ADD_DIRECTORY = 1
        const val REQUEST_INSTALL_KEYS = 2
        const val REQUEST_INSTALL_AMIIBO_KEYS = 3
        const val REQUEST_SELECT_GPU_DRIVER = 4
    }
}